TIL.48) [AWS] Cloud 보안

aws

클라우드에 대한 주요 위협

  1. 데이터 유출
  2. 불충분한 ID, 자격증명 및 엑세스 관리
  3. 안전하지 않은 인터페이스와 API
  4. 시스템 취약점
  5. 계정 도용
  6. 악의적인 내부자
  7. APT (Advanced Persistent Threats) : 기생충 형태의 사이버 공격
  8. 데이터 손실
  9. 불충분한 실사
  10. 클라우드 서비스 남용과 악의적인 사용
  11. DoS ( Denial of Service)
  12. 공유 기술 취약점
  13. 스펙트라와 멜트다운

보호 대상

  • Data
  • Biz, Service

기술적 핵심 보안 위협

가상화 취약점 상속

  • 하이퍼바이저에서 문제가 생긴다면 그 위에 올라가는 어플리케이션에도 그 문제들이 상속되어 발생할 수 있다.

자원 공유와 집중화에 따른 서비스 장애

  • 자원 공유와 집중화는 클라우드 서비스의 장점이지만 집중화로 인해 하나의 자원에서 문제가 발생한다면 모든 자원에 문제가 발생 할 수 있다.

분산처리에 따른 보안적용의 어려움

  • 다양한 클라우드를 사용하고 있다면 각각의 클라우드에 동일한 수준의 보안적용이 필요하다. 다만, 클라우드에서 제공하는 보안 기술에 차이가 있다보니 모든 클라우드에 동일한 수준의 보안을 적용하는 것이 어렵다.

기술외적 핵심 보안 위협

정보위탁에 따른 정보 유출 위협

  • 클라우드 서비스를 통해 배포하는 것은 나의 서비스를 위탁하는 것과 같기 때문에 정보위탁이라는 이슈가 발생 할 수 있다.

사용 단말의 다양성과 분실에 따른 정보 유출

  • 모바일 환경에서 사용자가 단말기를 분실한다면 그에 따른 정보유출 가능성이 존재한다.

법규 및 규제의 문제

  • 법규 또는 규제의 변화로 인해 발생할 수 있는 보안 이슈

데이터 관리 책임, 누구에게 있는가?

https://yongineer.duckdns.org/aws/til48_01.png

💡 AWS와 고객의 공동 책임

AWS

클라우드의 보안에 대한 책임

  • AWS 클라우드 서비스의 물리적 인프라
  • 소프트웨어 및 네트워킹 기능이 포함

고객

클라우드에서의 보안에 대한 책임

  • 서비스 오퍼링을 적절하게 구성 및 사용해야 한다.
  • 애플리케이션 소프트웨어 및 민감한 데이터에 대한 적절한 보안, 보호, 및 백업을 유지하기 위한 자체적인 조치를 취해야 한다.

제로 트러스트 모델

💡 누구도 믿지 않는 것이 전제

  • 내부, 외부를 막론하고 적절한 인증 절차 없이는 누구도 신뢰하지 않는다.
  • 신원이 파악되기 전까지는 네트워크에 대한 모든 접속을 차단할 것
  • 사용자가 누구인지 그리고 권한이 있는 인물인지가 확인되기 전까지는 IP주소나 기기에 대한 그 어떤 접속도 허용하지 않을 것

제로 트러스트 모델의 확립을 위하여

  • 다중 인증이나 IAM(Identity and Access Management), 오케스트레이션, 애널리틱스, 암호화, 스코어링 및 파일 시스템 인가등의 기술에 의존한다.
  • 네트워크 설계의 방향은 내부 → 외부
  • 제로 트러스트 모델을 실현시킬 적절한 기술을 도입함과 동시에 레거시 시스템에서 클라우드로의 이전을 진행해 나가야 한다.

AWS 사용자 및 권한의 보안

Identity and Access Management (IAM)

https://yongineer.duckdns.org/aws/til48_03.png

💡 사용자의 AWS서비스와 리소스에 대한 액세스를 안전하게 통제하며 접근 권한과 인증 등을 중앙 관리하는 서비스

  • IAM을 사용하여 AWS 계정 안에 여러 사용자들 각각의 권한과 인증을 관리할 수 있다.
  • 암호 및 액세스 키를 서로 공유할 필요가 없으며 관리자가 손쉽고 안전하게 사용자의 권한을 운영하는 것이 가능하다.

IAM요소

  1. Role

    • 특정 AWS 리소스에 액세스하기 위한 권한의 집합
  2. Policies

    • 특정 AWS 리소스를 수행하거나 작업 목적의 단위이며 권한과 연결되어 사용자 혹은 그룹에 정책이 할당
  3. Group, User

    • 사용자를 그룹에 구성가능하며 각각 정책들을 연결하여 접근 및 작업을 하는 주체
  4. Resource Based Policy

    • 리소스 단위로 권한을 부여할 작업과 영향 받는 리소스를 지정하고 사용자를 명시적으로 지정하여 정책을 부여

Cognito

https://yongineer.duckdns.org/aws/til48_02.png

💡 Google, Facebook 및 Amazon과 같은 자격 증명 공급자 활용 및 자체 자격 증명 솔루션을 사용하여 사용자 인증을 간편하고 안전하게 관리하는 서비스

  • 완전 관리형 사용자 관리 서비스이며, 보안 및 확장의 고민으로부터 자유롭고, 비용 효율적이다.

AWS 어플리케이션 보안

Security Group

https://yongineer.duckdns.org/aws/til48_04.jpg

💡 하나 이상의 인스턴스에 대한 트래픽 규칙의 묶음을 정의하며 보안 그룹에 있는 인스턴스의 트래픽을 제어하는 방화벽 역할을 수행한다.

  • 들어오는 (인바운드) 트래픽과 나가는(아웃바운드) 트래픽을 제어한다.
  • 그룹의 규칙은 언제든지 변경 가능하며 자동으로 해당 그룹에 있는 인스턴스에 적용된다.

Security Group 구성

https://yongineer.duckdns.org/aws/til48_05.png

Web Server

  • 80(HTTP), 443(HTTPS)포트만 열어놓아 해당 포트로 접근한 연결만 허용한다.
  • App layer에 대한 Web layer 엑세스만 허용한다.

Application Server

  • App layer 1의 22(SSH)포트만 열어놓아 내부 네트워크의 개발자만 접근을 허용한다.
  • DB layer에 대한 App layer 엑세스만 허용한다.

DB Server

  • 데이터 변조 및 탈취위험이 있으므로 외부로 부터의 연결을 허용하지 않는다.
  • 다만, Web Server나 App Server에서는 접근이 가능해야 한다.

AMI 보안

https://yongineer.duckdns.org/aws/til48_06.gif

  • 가상 인스턴스의 기본이 되는 이미지인 AMI(Amazon Machine Image)를 주기적으로 패치하여 이미지에 최신 보안을 적용한다.
  • 새로운 패치가 적용된 AMI로 재배포하여 어플리케이션의 정상동작 유무를 확인하고 모든 인스턴스에 적용하도록 한다.
  • 보안 체크사항을 테스트 스크립트를 통해 확인하고 프로세스를 자동화시킨다.

Inspector

https://yongineer.duckdns.org/aws/til48_07.png

💡 어플리케이션의 취약점과 모범 사례등을 자동으로 평가하여 보안 및 규정 준수를 개선시키도록 지원하는 서비스

  • 인스턴스에 에이전트를 설치 및 수집 방식이며 Inspector에서 취약성 관련 수백 개 규칙들을 수행한다.
  • 정기적으로 AWS에서 최시의 보안 규칙을 업데이트하여 최신의 설정으로 평가한다.

규칙 패키지

  1. Common Vulnerabilities and Exposures

    • 보안 취약점과 공개된 위험 노출에 대한 참조 방법 등을 제공한다.
    • https://cve.mitre.org/
  2. CIS Operationg System Security Configuration Benchmarks

  3. Security Best Practices

    • 시스템의 설정 혹은 구성이 보안적인지 확인할 수 있도록 다양한 사례를 제시한다.
  4. Runtime Behavior Analysis

    • 인스턴스들의 평가 항목을 통해 행동 상태를 분석하고 보다 안전하게 구성하는 지침을 제공한다.

AWS 네트워크 및 데이터 보안

VPC

https://yongineer.duckdns.org/aws/til48_08.png

💡 분리된 가상 네트워크 블록이며 사용자가 직접 네트워크 구성 토폴로지를 정의하여 IP 주소 범위, 라우팅 테이블, 게이트웨이 및 보안 설정을 커스텀하게 구성 가능하다.

  • EC2 인스턴스 및 AWS 리소스들이 VPC 네트워크 위에 실행이 되며 해당 VPC의 흐름을 로깅할 수 있다.
  • 라우팅 테이블 및 게이트웨이를 통해 인터넷과 단절되거나 사내에서만 연동할 수 있게 네트워크 구성이 가능하다.

구성 시나리오

  1. 단일 퍼블릭 서브넷 VPC

    • 단일 티어 퍼블릭 웹 어플리케이션을 구성하는 경우
  2. 퍼블릭과 프라이빗이 공존하는 VPC

    • 다중 티어 어플리케이션에 적압하다.
    • 퍼블릭에 Web Server를 배치하고 DB Server는 프라이빗 서브넷에 배치
  3. VPN 엑세스를 제공하는 VPC

    • 온-프라미스 환경과 클라우드를 사설 통신으로 확장하는 구성

WAF

https://yongineer.duckdns.org/aws/til48_09.png

💡 일반적인 웹 취약점 공격으로부터 웹 어플리케이션을 보호하는 목적을 가진 웹 어플리케이션 방화벽이다.

  • 과도한 리소스 사용 공격, SQL Injection, 교차 사이트 스크립팅과 같은 일반적은 공격 패턴을 차단하고 커스텀하게 설계된 규칙을 생성할 수 있으며 종량제 구조로 비용 효율적이다.

AWS Shield

  • 웹 사이트나 어플리케이션을 대상으로 가장 흔하고, 자주 발생하는 네트워크 및 전송 계층 DDoS공격을 방어한다.
  • CloudFront 및 Route 53을 같이 사용할 경우 특별한 이점이 존재하며 이미 알려진 모든 인프라 (계층 3/4) 공격에 대해 포괄적인 가용성 보호를 받을 수 있다.

DDoS 공격 유형

  1. UDP(User Datagran Protocol) 반사 공격

    • 공격자는 요청의 소스를 수푸핑하고 UDP를 사용하여 서버에서 대규모 응답을 끌어낼 수 있다.
    • 공격을 받는 스푸핑된 IP 주소에 추가 네트워크 트래픽이 유도되면 대상 서버의 속도가 느려질 수 있으며 합법적인 사용자가 필요한 리소스에 액세스 하지 못할 수 있다.
  2. SYN flood

    • 연결을 절반 정도 열린 상태로 유지하여 시스템에서 사용 가능한 리소스가 고갈되도록 하는 것
    • 사용자가 웹 서버와 같은 TCP서비스에 연결하면 클라이언트는 SYN패킷을 전송한다. 서버는 승인을 반환하고 클라이언트는 자체 승인을 반환하여 3방향 행드셰이크를 완료한다. SYN flood에서 세 번째 승인은 반환되지 않고 서버는 응답을 대기하는 상태로 유지된다. 이로 인해 다른 사용자가 서버에 연결하지 못 할 수 있다.
  3. DNS 쿼리 flood

    • 공격자는 여러 DNS쿼리를 사용하여 DNS서버의 리소스를 고갈시킨다.
  4. HTTP fllod/캐시 버스팅(계층 7) 공격

    • GETPOST flood를 포함한 HTTP flood 공격에서 공격자는 웹 애플리케이션의 실제 사용자로부터 나온 것 처럼 보이는 여러 HTTP요청을 전송한다.
    • 캐시 버스팅 공격은 HTTP요청 쿼리 문자열에서 변형을 사용하여 엣지 로케이션 캐시 컨텐츠 사용을 가로막고 컨텐츠가 오리진 웹 서버에서 제공되도록 강제하여 오리진 웹 서버에 손상을 일으킬 수 있는 추가 부담을 발생시키는 일종의 HTTP flood이다.

Written by@Yongineer
Backend Developer

GitHubInstagram